/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Usuario;

import clienteSandraParada.Login;
import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 * Clase que tiene como objetivo mostrar los usuarios agregados en la base de datos,
 * en donde se pueden realizar algunas acciones.
 *
 * @author Franzel
 */
public class Usuario extends javax.swing.JPanel {

    DialogoInfoUsuarioAdministracion formularioAdministracion = new DialogoInfoUsuarioAdministracion(null, true, this);
    DialogoInfoUsuarioProfesional formularioProfesional = new DialogoInfoUsuarioProfesional(null, true, this);

    public Usuario() {
        initComponents();
        this.actualizarTabla((java.util.List<service.Usuario>) listarUsuarios());

        //Inicializa formato de tabla con horario
        formularioProfesional.campoDuracion.setSelectedItem("30");
        //this.cambiarBloque(null); 

        this.dialogoTipoCuenta.setLocationRelativeTo(null);
        this.buttonGroup1.add(campoAdministrador);
        this.buttonGroup1.add(campoProfesional);
        this.buttonGroup1.add(campoSecretaria);


    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        dialogoTipoCuenta = new javax.swing.JDialog();
        campoAdministrador = new javax.swing.JRadioButton();
        campoSecretaria = new javax.swing.JRadioButton();
        campoProfesional = new javax.swing.JRadioButton();
        botonAceptarTC = new javax.swing.JButton();
        botonCancelarTC = new javax.swing.JButton();
        buttonGroup1 = new javax.swing.ButtonGroup();
        dialogoEliminarUsuario = new javax.swing.JDialog();
        jPanel8 = new javax.swing.JPanel();
        etiquetaEliminar = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        botonSiEliminar = new javax.swing.JButton();
        botonNoEliminar = new javax.swing.JButton();
        jPanel5 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jScrollPane4 = new javax.swing.JScrollPane();
        contenedorUsuarios = new javax.swing.JTable();
        datosABuscar = new javax.swing.JTextField();
        jPanel6 = new javax.swing.JPanel();
        etiquetaMensajeria = new javax.swing.JLabel();
        jPanel7 = new javax.swing.JPanel();
        botonAgregar = new javax.swing.JButton();
        botonModificar = new javax.swing.JButton();
        botonEliminar = new javax.swing.JButton();
        botonVer = new javax.swing.JButton();
        botonPrivilegios = new javax.swing.JButton();

        dialogoTipoCuenta.setTitle("Tipo de Cuenta Usuario");
        dialogoTipoCuenta.setMinimumSize(new java.awt.Dimension(330, 120));

        campoAdministrador.setText("Administrador");

        campoSecretaria.setText("Secretaria");

        campoProfesional.setText("Profesional");

        botonAceptarTC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Aceptar.png"))); // NOI18N
        botonAceptarTC.setText("Aceptar");
        botonAceptarTC.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAceptarTCActionPerformed(evt);
            }
        });

        botonCancelarTC.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Cancelar.png"))); // NOI18N
        botonCancelarTC.setText("Cancelar");
        botonCancelarTC.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonCancelarTCActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout dialogoTipoCuentaLayout = new javax.swing.GroupLayout(dialogoTipoCuenta.getContentPane());
        dialogoTipoCuenta.getContentPane().setLayout(dialogoTipoCuentaLayout);
        dialogoTipoCuentaLayout.setHorizontalGroup(
            dialogoTipoCuentaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(dialogoTipoCuentaLayout.createSequentialGroup()
                .addGap(15, 15, 15)
                .addGroup(dialogoTipoCuentaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(dialogoTipoCuentaLayout.createSequentialGroup()
                        .addComponent(botonAceptarTC)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botonCancelarTC, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(dialogoTipoCuentaLayout.createSequentialGroup()
                        .addComponent(campoAdministrador)
                        .addGap(18, 18, 18)
                        .addComponent(campoProfesional)
                        .addGap(18, 18, 18)
                        .addComponent(campoSecretaria)))
                .addContainerGap(18, Short.MAX_VALUE))
        );
        dialogoTipoCuentaLayout.setVerticalGroup(
            dialogoTipoCuentaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(dialogoTipoCuentaLayout.createSequentialGroup()
                .addGap(16, 16, 16)
                .addGroup(dialogoTipoCuentaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(campoAdministrador)
                    .addGroup(dialogoTipoCuentaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(campoProfesional)
                        .addComponent(campoSecretaria)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                .addGroup(dialogoTipoCuentaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonAceptarTC)
                    .addComponent(botonCancelarTC))
                .addContainerGap())
        );

        dialogoEliminarUsuario.setTitle("Eliminar paciente");
        dialogoEliminarUsuario.setMinimumSize(new java.awt.Dimension(420, 180));
        dialogoEliminarUsuario.setModal(true);
        dialogoEliminarUsuario.setResizable(false);

        etiquetaEliminar.setText("¿Confirma que desea enviar a la papelera los usuarios seleccionados?");

        jLabel18.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Papelera.png"))); // NOI18N

        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel18)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(etiquetaEliminar)
                .addContainerGap(16, Short.MAX_VALUE))
        );
        jPanel8Layout.setVerticalGroup(
            jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel8Layout.createSequentialGroup()
                .addGap(40, 40, 40)
                .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel18)
                    .addGroup(jPanel8Layout.createSequentialGroup()
                        .addGap(9, 9, 9)
                        .addComponent(etiquetaEliminar)))
                .addContainerGap(24, Short.MAX_VALUE))
        );

        botonSiEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Aceptar.png"))); // NOI18N
        botonSiEliminar.setText("Si");
        botonSiEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonSiEliminarActionPerformed(evt);
            }
        });

        botonNoEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Cancelar.png"))); // NOI18N
        botonNoEliminar.setText("No");
        botonNoEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonNoEliminarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout dialogoEliminarUsuarioLayout = new javax.swing.GroupLayout(dialogoEliminarUsuario.getContentPane());
        dialogoEliminarUsuario.getContentPane().setLayout(dialogoEliminarUsuarioLayout);
        dialogoEliminarUsuarioLayout.setHorizontalGroup(
            dialogoEliminarUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, dialogoEliminarUsuarioLayout.createSequentialGroup()
                .addContainerGap(227, Short.MAX_VALUE)
                .addComponent(botonSiEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonNoEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        dialogoEliminarUsuarioLayout.setVerticalGroup(
            dialogoEliminarUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(dialogoEliminarUsuarioLayout.createSequentialGroup()
                .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(dialogoEliminarUsuarioLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonSiEliminar)
                    .addComponent(botonNoEliminar))
                .addGap(0, 15, Short.MAX_VALUE))
        );

        setPreferredSize(new java.awt.Dimension(953, 603));

        jPanel5.setBackground(new java.awt.Color(255, 255, 255));
        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1), "Usuarios", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Tahoma", 0, 36))); // NOI18N

        jLabel4.setText("Buscar ");

        contenedorUsuarios.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Tipo de cuenta", "Rut", "Usuario", "E-mail", "Celular"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        contenedorUsuarios.getTableHeader().setReorderingAllowed(false);
        contenedorUsuarios.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                mouseClickedContenedorUsuarios(evt);
            }
        });
        jScrollPane4.setViewportView(contenedorUsuarios);

        datosABuscar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                datosABuscarKeyReleased(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addGap(728, 728, 728)
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(datosABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE))
            .addComponent(jScrollPane4)
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(datosABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE)
                .addGap(59, 59, 59))
        );

        jPanel6.setBackground(new java.awt.Color(255, 255, 255));

        etiquetaMensajeria.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        etiquetaMensajeria.setText("Área de mensajería");

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(etiquetaMensajeria, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(etiquetaMensajeria, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)
        );

        jPanel7.setBackground(new java.awt.Color(255, 255, 255));

        botonAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Agregar.png"))); // NOI18N
        botonAgregar.setText("Agregar");
        botonAgregar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        botonAgregar.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonAgregar.setMaximumSize(new java.awt.Dimension(97, 43));
        botonAgregar.setMinimumSize(new java.awt.Dimension(97, 43));
        botonAgregar.setPreferredSize(new java.awt.Dimension(106, 51));
        botonAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAgregarActionPerformed(evt);
            }
        });

        botonModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Edit.png"))); // NOI18N
        botonModificar.setText("Modificar");
        botonModificar.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonModificarActionPerformed(evt);
            }
        });

        botonEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/delete_32x32x32.png"))); // NOI18N
        botonEliminar.setText("Eliminar");
        botonEliminar.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonEliminar.setMaximumSize(new java.awt.Dimension(106, 51));
        botonEliminar.setMinimumSize(new java.awt.Dimension(106, 51));
        botonEliminar.setPreferredSize(new java.awt.Dimension(106, 51));
        botonEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonEliminarActionPerformed(evt);
            }
        });

        botonVer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Previsualizar.png"))); // NOI18N
        botonVer.setText("Ver");
        botonVer.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonVer.setMaximumSize(new java.awt.Dimension(106, 51));
        botonVer.setMinimumSize(new java.awt.Dimension(106, 51));
        botonVer.setPreferredSize(new java.awt.Dimension(106, 51));
        botonVer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonVerActionPerformed(evt);
            }
        });

        botonPrivilegios.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Advertencia.png"))); // NOI18N
        botonPrivilegios.setText("Privilegios");
        botonPrivilegios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonPrivilegiosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(botonPrivilegios)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(botonAgregar, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonModificar, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonVer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        jPanel7Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {botonAgregar, botonEliminar, botonModificar, botonPrivilegios, botonVer});

        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addGap(15, 15, 15)
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(botonAgregar, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(botonModificar)
                        .addComponent(botonEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(botonVer, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(botonPrivilegios))
                .addContainerGap(15, Short.MAX_VALUE))
        );

        jPanel7Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {botonAgregar, botonEliminar, botonModificar, botonPrivilegios, botonVer});

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
    }// </editor-fold>//GEN-END:initComponents

    /**
     * Método Action Performed del boton de Modificar, el cuál para ser utilizado
     * debe haber una fila con la información de un usuario seleccionada previamente.
     * Al realizarce el evento desplega el dialogoInfoUsuario mostrando los campos
     * a modificar.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    private void botonModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonModificarActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isModificarUsuario()) {
            // TODO add your handling code here:
            if (-1 != this.contenedorUsuarios.getSelectedRow()) //Devuelve -1 si no esta seleccionada
            {
                int fila = this.contenedorUsuarios.getSelectedRow();
                String rut = String.valueOf(this.contenedorUsuarios.getValueAt(fila, 1));
                service.Usuario usuario = (service.Usuario) cargarUsuario(rut);


                if (usuario.getTipoCuenta().equals("Profesional")) {
                    formularioProfesional.habilitarCampos(true);
                    this.formularioProfesional.setTitle("Modificar Usuario");
                    this.formularioProfesional.botonFormularioAccion.setText("Aceptar");
                    this.formularioProfesional.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Aceptar.png")));
                    this.formularioProfesional.campoTipoCuenta.setEnabled(false);
                    this.formularioProfesional.cambiarEtiquetaMensajeria("Área de mensajería", Color.BLACK);
                    this.formularioProfesional.camposObligatoriosVisibles(true);
                    formularioProfesional.llenarCampos(usuario);
                    this.formularioProfesional.setVisible(true);

                } else {
                    formularioAdministracion.habilitarCampos(true);
                    this.formularioAdministracion.setTitle("Modificar Usuario");
                    this.formularioAdministracion.botonFormularioAccion.setText("Aceptar");
                    this.formularioAdministracion.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Aceptar.png")));
                    formularioAdministracion.llenarCampos(usuario);
                    this.formularioProfesional.campoTipoCuenta.setEnabled(false);
                    this.formularioAdministracion.cambiarEtiquetaMensajeria("Área de mensajería", Color.black);
                    this.formularioAdministracion.camposObligatoriosVisibles(true);
                    this.formularioAdministracion.setVisible(true);


                }

            } else {
                JOptionPane.showMessageDialog(this, "Debe seleccionar una fila!", "Advertencia", JOptionPane.WARNING_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonModificarActionPerformed

    /**
     * Método Action Performed del boton de Eliminar, el cuál para ser utilizado
     * debe haber una o más filas seleccionadas previamente.
     * Al realizarce el evento se cambia el estado de los usuario, ya que pasa a la papelera.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    private void botonEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonEliminarActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isEliminarUsuario()) {
            // TODO add your handling code here:
             int cont=0;
             for (int i = 0; i < contenedorUsuarios.getRowCount(); i++) {
                if (contenedorUsuarios.isRowSelected(i)) {
                    cont++;
                }
            }
            if (cont >= 1) {
                if (cont > 1) {
                    etiquetaEliminar.setText("¿Confirma que desea enviar a la papelera los usuarios seleccionados?");
                } else if (cont == 1) {
                    etiquetaEliminar.setText("¿Confirma que desea enviar a la papelera el usuario seleccionado?");
                }
                dialogoEliminarUsuario.setLocationRelativeTo(null);
                dialogoEliminarUsuario.setVisible(true);
            } else {
                this.cambiarEtiquetaMensajeria("Debe seleccionar un usuario para ser eliminado", Color.red);
            }

        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonEliminarActionPerformed

    /**
     * Método Action Performed del boton de Agregar.
     * Al realizarce el evento desplega el dialogoInfoUsuario mostrando los campos
     * a llenar para poder agregar el usuario.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    private void botonAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAgregarActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isAgregarUsuario()) {
            this.campoProfesional.setSelected(false);
            this.campoSecretaria.setSelected(false);
            this.campoAdministrador.setSelected(true);
            this.dialogoTipoCuenta.setVisible(true);
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonAgregarActionPerformed

    /**
     * Método Action Performed del boton de Ver, el cuál para ser utilizado
     * debe haber una fila con la información de un usuario seleccionada previamente.
     * Al realizarce el evento desplega el dialogoInfoUsuario mostrando los datos, con la
     * particuralidad de que no se puede modificar la información.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    private void botonVerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonVerActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isVerUsuario()) {
            accionVer();
            this.formularioAdministracion.getMensajesAdvertencia().setText("Área de mensajería");
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonVerActionPerformed

    /**
     * Método MouseClicked de la tabla que contiene a los usuarios.
     *
     * @param variable de tipo MouseEvent con el evento del mouse
     **/
    private void mouseClickedContenedorUsuarios(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mouseClickedContenedorUsuarios
        // TODO add your handling code here:
        DefaultTableModel modelo = (DefaultTableModel) this.contenedorUsuarios.getModel();
        int fila = contenedorUsuarios.rowAtPoint(evt.getPoint());
        if ((fila > -1) && evt.getClickCount() == 2) {
            accionVer();
        }
    }//GEN-LAST:event_mouseClickedContenedorUsuarios

    /**
     * Método Key Released del campo destinado para buscar datos.     *
     *
     * @param variable de tipo KeyEvent con el evento del campo
     **/
    private void datosABuscarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datosABuscarKeyReleased
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (p.isBuscarUsuario()) {
            if (!datosABuscar.getText().equals("")) {
                limpiarTabla();
                java.util.List<service.Usuario> lista = (java.util.List<service.Usuario>) this.filtrarUsuarios(datosABuscar.getText());
                actualizarTabla(lista);
            } else {
                limpiarTabla();
                actualizarTabla((java.util.List<service.Usuario>) listarUsuarios());
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_datosABuscarKeyReleased

    private void botonPrivilegiosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonPrivilegiosActionPerformed
        service.Privilegios pri = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if (pri.isVerPrivilegios()) {

            if (this.contenedorUsuarios.getSelectedRowCount() == 0) {
                this.etiquetaMensajeria.setText("Debe seleccionar un usuario");
            } else if (this.contenedorUsuarios.getSelectedRowCount() > 1) {
                this.etiquetaMensajeria.setText("Debe seleccionar solo un usuario");
            } else if (this.contenedorUsuarios.getSelectedRowCount() == 1) {
                service.Usuario u = (service.Usuario) cargarUsuario((String) this.contenedorUsuarios.getModel().getValueAt(this.contenedorUsuarios.getSelectedRow(), 1));
                Privilegios p = new Privilegios(null, true, u);
                p.setVisible(true);
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonPrivilegiosActionPerformed

    private void botonAceptarTCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarTCActionPerformed
        // TODO add your handling code here:
        this.dialogoTipoCuenta.dispose();

        if (campoProfesional.isSelected()) {
            this.formularioProfesional.limpiarCampos();
            this.formularioProfesional.habilitarCampos(true);
            this.formularioProfesional.setTitle("Agregar Usuario");
            this.formularioProfesional.botonFormularioAccion.setText("Agregar");
            this.formularioProfesional.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Agregar.png")));
            this.formularioProfesional.getEstados().clear();
            this.formularioProfesional.getDisponibilidad().clear();
            this.formularioProfesional.campoTipoCuenta.setSelectedItem("Profesional");
            this.formularioProfesional.campoTipoCuenta.setEnabled(false);
            this.formularioProfesional.getMensajesAdvertencia().setText("Área de mensajería");
            this.formularioProfesional.camposObligatoriosVisibles(true);
            this.formularioProfesional.agregarFocusListenerRut();
            this.formularioProfesional.radioButomPorcentaje.setSelected(true);
            this.formularioProfesional.campoArriendo.setEnabled(false);
            this.formularioProfesional.setVisible(true);

        } else {

            this.formularioAdministracion.limpiarCampos();
            this.formularioAdministracion.habilitarCampos(true);
            this.formularioAdministracion.setTitle("Agregar Usuario");
            this.formularioAdministracion.botonFormularioAccion.setText("Agregar");
            this.formularioAdministracion.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Agregar.png")));
            if (this.campoAdministrador.isSelected()) {
                this.formularioAdministracion.campoTipoCuenta.setText("Administrador");
            } else {
                this.formularioAdministracion.campoTipoCuenta.setText("Secretaria");
            }
            this.formularioAdministracion.campoTipoCuenta.setEnabled(false);
            this.formularioAdministracion.getMensajesAdvertencia().setText("Área de mensajería");
            this.formularioAdministracion.camposObligatoriosVisibles(true);
            this.formularioAdministracion.agregarFocusListenerRut();
            this.formularioAdministracion.setVisible(true);

        }

    }//GEN-LAST:event_botonAceptarTCActionPerformed

    private void botonCancelarTCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonCancelarTCActionPerformed
        // TODO add your handling code here:
        this.dialogoTipoCuenta.dispose();
    }//GEN-LAST:event_botonCancelarTCActionPerformed

    private void botonSiEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonSiEliminarActionPerformed
        dialogoEliminarUsuario.dispose();
        for (int i = 0; i < contenedorUsuarios.getRowCount(); i++) {
            if (contenedorUsuarios.isRowSelected(i)) {
                String rut = (String) contenedorUsuarios.getValueAt(i, 1);
                service.Usuario us = (service.Usuario) cargarUsuario(rut);
                us.setActivo(false);
                modificarUsuario(us);
                String valorNuevo = "Rut: " + us.getRut() + "\n" + "Nombres: " + us.getNombres() +"\n"+ "Apellido Paterno: " + us.getApellidoPaterno() + "Apellido Materno: " + us.getApellidoMaterno()
                            + "\n" + "Usuario: " + us.getUsuario() + "\n" + "Bloque: " + us.getBloque() + "\n" + "Calle: " + us.getCalle() + "\n" + "Celular: " + us.getCelular() + "\n" + "Comuna: " + us.getComuna() + "\n" + "Departamento: " + us.getDepto() + "\n" + "Email: " + us.getEmail()
                            + "\n" + "Fecha nacimiento: " + us.getFechaNac() + "\n" + "Número calle: " + us.getNumero() + "\n" + "Provincia: " + us.getProvincia()
                            + "\n" + "Región: " + us.getRegion() + "\n" + "Sector: " + us.getSector() + "\n" + "Teléfono: " + us.getTelefono() + "\n" + "Tipo cuenta: " + us.getTipoCuenta();
                registrar(Login.getUser(), "Usuario", "Eliminó usuario: " + us.getRut(), "No aplica", valorNuevo);

            }
        }
        this.actualizarTabla(listarUsuarios());
        

}//GEN-LAST:event_botonSiEliminarActionPerformed

    private void botonNoEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonNoEliminarActionPerformed
        dialogoEliminarUsuario.dispose();
}//GEN-LAST:event_botonNoEliminarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonAceptarTC;
    private javax.swing.JButton botonAgregar;
    private javax.swing.JButton botonCancelarTC;
    private javax.swing.JButton botonEliminar;
    private javax.swing.JButton botonModificar;
    private javax.swing.JButton botonNoEliminar;
    private javax.swing.JButton botonPrivilegios;
    private javax.swing.JButton botonSiEliminar;
    private javax.swing.JButton botonVer;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JRadioButton campoAdministrador;
    private javax.swing.JRadioButton campoProfesional;
    private javax.swing.JRadioButton campoSecretaria;
    private javax.swing.JTable contenedorUsuarios;
    private javax.swing.JTextField datosABuscar;
    private javax.swing.JDialog dialogoEliminarUsuario;
    private javax.swing.JDialog dialogoTipoCuenta;
    private javax.swing.JLabel etiquetaEliminar;
    private javax.swing.JLabel etiquetaMensajeria;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JScrollPane jScrollPane4;
    // End of variables declaration//GEN-END:variables
    public void normalizarEtiquetaMensajeria() {
        etiquetaMensajeria.setText("Área de mensajería");
        etiquetaMensajeria.setForeground(Color.black);
    }

    public void cambiarEtiquetaMensajeria(String mensaje, Color color) {
        etiquetaMensajeria.setText(mensaje);
        etiquetaMensajeria.setForeground(color);
    }




    /**
     * Método utilizado para realizar la acción del botón ver, la cuál también se puede
     * utilizar cuando se hace doble clic sobre una fila.
     */
    public void accionVer() {

        if (-1 != this.contenedorUsuarios.getSelectedRow()) //Devuelve -1 si no esta seleccionada
        {

            int fila = this.contenedorUsuarios.getSelectedRow();
            String rut = String.valueOf(this.contenedorUsuarios.getValueAt(fila, 1));
            service.Usuario user = (service.Usuario) cargarUsuario(rut);
            //tengo lista y busco en los servicios el rut, muestro info
            if (user.getTipoCuenta().equals("Profesional")) {
                this.formularioProfesional.setTitle("Ver Usuario");
                this.formularioProfesional.botonFormularioAccion.setText("Exportar");
                this.formularioProfesional.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/pdf.png")));
                formularioProfesional.llenarCampos((service.Usuario) cargarUsuario(rut));
                formularioProfesional.habilitarCampos(false);
                this.formularioProfesional.camposObligatoriosVisibles(false);
                this.formularioProfesional.setVisible(true);

            } else {
                this.formularioAdministracion.setTitle("Ver Usuario");
                this.formularioAdministracion.botonFormularioAccion.setText("Exportar");
                this.formularioAdministracion.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/pdf.png")));
                formularioAdministracion.llenarCampos((service.Usuario) cargarUsuario(rut));
                formularioAdministracion.habilitarCampos(false);
                formularioAdministracion.camposObligatoriosVisibles(false);
                this.formularioAdministracion.setVisible(true);

            }
        } else {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una fila!", "Advertencia", JOptionPane.WARNING_MESSAGE);
        }
    }

    /**
     * Método utilizado para actualizar los datos de la tabla que muestra todos los usuarios,
     * de acuerdo a la información que se encuentra en la base de datos.
     *
     * @param user de tipo service.Usuario que contiene al usuario.
     */
    public void actualizarTabla(java.util.List<service.Usuario> user) {
        limpiarTabla();
        java.util.List<service.Usuario> usuarios = user;

        for (int i = 0; i < usuarios.size(); i++) {
            if (usuarios.get(i).isActivo() == true) {
                int fila = this.contenedorUsuarios.getRowCount();
                DefaultTableModel modelo = (DefaultTableModel) this.contenedorUsuarios.getModel();
                modelo.addRow(new String[4]);
                for (int col = 0; col < this.contenedorUsuarios.getColumnCount(); col++) {
                    this.contenedorUsuarios.setValueAt(usuarios.get(i).getTipoCuenta(), fila, 0);
                    this.contenedorUsuarios.setValueAt(usuarios.get(i).getRut(), fila, 1);
                    this.contenedorUsuarios.setValueAt(usuarios.get(i).getUsuario(), fila, 2);
                    this.contenedorUsuarios.setValueAt(usuarios.get(i).getEmail(), fila, 3);
                    this.contenedorUsuarios.setValueAt(usuarios.get(i).getCelular(), fila, 4);
                }
            }

        }
    }

    /**
     * Método utilizado para limpiar la tabla que contiene la información
     * de los usuarios que están en la base de datos.
     */
    public void limpiarTabla() {
        for (int i = this.contenedorUsuarios.getRowCount(); i > 0; i--) {
            DefaultTableModel temp = (DefaultTableModel) this.contenedorUsuarios.getModel();
            temp.removeRow(temp.getRowCount() - 1);
        }
    }

    public JTable getContenedorUsuarios() {
        return contenedorUsuarios;
    }

    public JLabel getjLabel5() {
        return etiquetaMensajeria;
    }


    /*Aqui comienzan los métodos correspondientes a los servicios*/
    private static boolean agregarPrivilegios(service.Privilegios privilegios) {
        service.PrivilegiosWS_Service service = new service.PrivilegiosWS_Service();
        service.PrivilegiosWS port = service.getPrivilegiosWSPort();
        return port.agregarPrivilegios(privilegios);
    }

    private static Object cargarPrivilegios(java.lang.String rut) {
        service.PrivilegiosWS_Service service = new service.PrivilegiosWS_Service();
        service.PrivilegiosWS port = service.getPrivilegiosWSPort();
        return port.cargarPrivilegios(rut);
    }

    /**
     * Método que carga el usuario de la Base de Datos, a partir de un rut y
     * a través del servicio cargarUsuario.
     * @param variable de tipo String correspondiente al rut usuario a cargar.
     * @return variable de tipo Object que corresponde al Usuario cargado.
     **/
    public Object cargarUsuario(java.lang.String rut) {
        service.UsuarioWSService service = new service.UsuarioWSService();
        service.UsuarioWS port = service.getUsuarioWSPort();
        return port.cargarUsuario(rut);
    }

    /**
     * Método que retorna la lista de Usuarios que estan en la Base de Datos,
     * a través del servicio listarUsuarios.
     * @return variable de tipo java.util.List<service.Usuario> que contiene la
     * lista de usuarios.
     **/
    private static java.util.List<service.Usuario> listarUsuarios() {
        service.UsuarioWSService service = new service.UsuarioWSService();
        service.UsuarioWS port = service.getUsuarioWSPort();
        return port.listarUsuarios();
    }

    /**
     * Método registra en la bitácora la acción realizada en el sistema
     **/
    private static Long registrar(service.Usuario usuario, java.lang.String modulo, java.lang.String accion, java.lang.String valorAnterior, java.lang.String valorNuevo) {
        service.BitacoraWSService service = new service.BitacoraWSService();
        service.BitacoraWS port = service.getBitacoraWSPort();
        return port.registrar(usuario, modulo, accion, valorAnterior, valorNuevo);
    }

    /**
     * Método que modifica el usuario que esta registrado en la Base de Datos,
     * a través del servicio modificarUsuario.
     * @param variable de tipo service.Usuario llamada arg0 que es el usuario a modificar.
     * @return variable de tipo boolean que indica si se realizó (true)
     * o no (false) la actualización del usuario.
     **/
    private static boolean modificarUsuario(service.Usuario arg0) {
        service.UsuarioWSService service = new service.UsuarioWSService();
        service.UsuarioWS port = service.getUsuarioWSPort();
        return port.modificarUsuario(arg0);
    }

    /**
     * Método que retorna la lista de Usuarios que se ha filtrado de acuerdo
     * a un parámetro a buscar.
     * @param String buscar
     * @return variable de tipo java.util.List<service.Usuario> que contiene la
     * lista de usuarios.
     **/
    private static java.util.List<service.Usuario> filtrarUsuarios(java.lang.String buscar) {
        service.UsuarioWSService service = new service.UsuarioWSService();
        service.UsuarioWS port = service.getUsuarioWSPort();
        return port.filtrarUsuario(buscar);
    }

    /**
     * Método que carga el usuario Profesional de la Base de Datos, a partir de un rut y
     * a través del servicio cargarUsuarioProfesional.
     * @param variable de tipo String correspondiente al rut usuario profesional a cargar.
     * @return variable de tipo Object que corresponde al Usuario cargado.
     **/
    private static Object cargarUsuarioProfesional(java.lang.String rut) {
        service.UsuarioProfesionalWSService service = new service.UsuarioProfesionalWSService();
        service.UsuarioProfesionalWS port = service.getUsuarioProfesionalWSPort();
        return port.cargarUsuarioProfesional(rut);
    }
}
